{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Real world example: Yeast Biolector Fermentation\n", "I this notebook, we will show how to apply the Pseudobatch transformation to data collected of a fed-batch experiment. We will showcase how to transform data from multiple cultures/replicates in one go and how to estimate the growth rate of each culture." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/s143838/.virtualenvs/pseudobatch-dev/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'stan_version_major': '2', 'stan_version_minor': '29', 'stan_version_patch': '2', 'STAN_THREADS': 'false', 'STAN_MPI': 'false', 'STAN_OPENCL': 'false', 'STAN_NO_RANGE_CHECKS': 'false', 'STAN_CPP_OPTIMS': 'false'}\n" ] } ], "source": [ "import os\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import numpy as np\n", "import seaborn as sns\n", "from patsy import dmatrices\n", "import statsmodels.api as sm\n", "\n", "\n", "from pseudobatch import pseudobatch_transform_pandas\n", "from pseudobatch.datasets import load_real_world_yeast_fedbatch \n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "This data is from a cultivation experiment done in a Biolector (actually a Robolector) operating in fed-batch mode. Four different __S. cerevisiae__ strains were cultivated in 8 replicates, there only difference is when the individual culture was sampled and how many times samples were drawn. Thus the dataset contains a total of 32 growth curves. In this tutorial we will show how to use pseudobatch transformation to transform all 32 growth curves and how to estimate the growth rate for each replicate.\n", "\n", "The Biolector is capable of collect online biomass measurements through the light scatter sensor. Thus this dataset contains a biomass measurement for each approximately fifth minute.\n", "\n", "First, we will load the dataset which is a part of the `pseudobatch.datasets`, thus is is easily loaded." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | Strain | \n", "Biolector well | \n", "Biolector column | \n", "Biolector row | \n", "Cycle | \n", "Time | \n", "Feeding time | \n", "Volume | \n", "Accum. feed [uL] | \n", "Biomass concentration [light scatter] | \n", "DO% | \n", "Sample volume | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "Yeast_strain_1 | \n", "C01 | \n", "1 | \n", "C | \n", "145.0 | \n", "14.5028 | \n", "0.2 | \n", "800.32 | \n", "0.32 | \n", "2.89 | \n", "147.440002 | \n", "0.0 | \n", "
1 | \n", "Yeast_strain_1 | \n", "C02 | \n", "2 | \n", "C | \n", "145.0 | \n", "14.5028 | \n", "0.2 | \n", "800.32 | \n", "0.32 | \n", "2.84 | \n", "146.250000 | \n", "0.0 | \n", "
2 | \n", "Yeast_strain_2 | \n", "C03 | \n", "3 | \n", "C | \n", "145.0 | \n", "14.5028 | \n", "0.2 | \n", "800.32 | \n", "0.32 | \n", "2.93 | \n", "145.429993 | \n", "0.0 | \n", "
3 | \n", "Yeast_strain_2 | \n", "C04 | \n", "4 | \n", "C | \n", "145.0 | \n", "14.5028 | \n", "0.2 | \n", "800.32 | \n", "0.32 | \n", "2.97 | \n", "145.610001 | \n", "0.0 | \n", "
4 | \n", "Yeast_strain_3 | \n", "C05 | \n", "5 | \n", "C | \n", "145.0 | \n", "14.5028 | \n", "0.2 | \n", "800.32 | \n", "0.32 | \n", "3.13 | \n", "148.240005 | \n", "0.0 | \n", "